package gestion.horarios.model.jpa.entities;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;
import java.util.List;
import static javax.persistence.FetchType.EAGER;


/**
 * The persistent class for the escenario database table.
 * 
 */
@Entity
@Table(name="escenario")
public class Escenario implements Serializable {
	private static final long serialVersionUID = 1L;
	private int escenarioId;
	private String estado;
	private Date fechaCreacion;
	private Date fechaEjecucion;
	private String nombre;
	private int minHrsTC;
	private int maxHrsTP;
	private String prioridad;
	private List<DisponibilidadDocenteEscenario> disponibilidaddocenteescenarios;
	private List<DisponibilidadEspacioLectivoEscenario> disponibilidadespaciolectivoescenarios;
	private CicloAcademico cicloacademico;
	private List<Horario> horarios;
	private List<SedeEscenario> sedeEscenarios;

    public Escenario() {
    }


	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	public int getEscenarioId() {
		return this.escenarioId;
	}

	public void setEscenarioId(int escenarioId) {
		this.escenarioId = escenarioId;
	}


	@Column(length=45)
	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}


    @Temporal( TemporalType.TIMESTAMP)
	public Date getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}


    @Temporal( TemporalType.TIMESTAMP)
	public Date getFechaEjecucion() {
		return this.fechaEjecucion;
	}

	public void setFechaEjecucion(Date fechaEjecucion) {
		this.fechaEjecucion = fechaEjecucion;
	}


	@Column(length=45)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getMinHrsTC() {
		return minHrsTC;
	}


	public void setMinHrsTC(int minHrsTC) {
		this.minHrsTC = minHrsTC;
	}


	public int getMaxHrsTP() {
		return maxHrsTP;
	}


	public void setMaxHrsTP(int maxHrsTP) {
		this.maxHrsTP = maxHrsTP;
	}

	@Column(length=45)
	public String getPrioridad() {
		return prioridad;
	}


	public void setPrioridad(String prioridad) {
		this.prioridad = prioridad;
	}

	//bi-directional many-to-one association to DisponibilidadDocenteEscenario
	@OneToMany(mappedBy="escenario")
	public List<DisponibilidadDocenteEscenario> getDisponibilidaddocenteescenarios() {
		return this.disponibilidaddocenteescenarios;
	}

	public void setDisponibilidaddocenteescenarios(List<DisponibilidadDocenteEscenario> disponibilidaddocenteescenarios) {
		this.disponibilidaddocenteescenarios = disponibilidaddocenteescenarios;
	}

	//bi-directional many-to-one association to DisponibilidadEspacioLectivoEscenario
	@OneToMany(mappedBy="escenario")
	public List<DisponibilidadEspacioLectivoEscenario> getDisponibilidadespaciolectivoescenarios() {
		return this.disponibilidadespaciolectivoescenarios;
	}

	public void setDisponibilidadespaciolectivoescenarios(List<DisponibilidadEspacioLectivoEscenario> disponibilidadespaciolectivoescenarios) {
		this.disponibilidadespaciolectivoescenarios = disponibilidadespaciolectivoescenarios;
	}

	//bi-directional many-to-one association to CicloacAdemico
    @ManyToOne
	@JoinColumn(name="CicloAcademicoId", nullable=false)
	public CicloAcademico getCicloacademico() {
		return this.cicloacademico;
	}

	public void setCicloacademico(CicloAcademico cicloacademico) {
		this.cicloacademico = cicloacademico;
	}

	//bi-directional many-to-one association to Horario
	@OneToMany(mappedBy="escenario")
	public List<Horario> getHorarios() {
		return this.horarios;
	}

	public void setHorarios(List<Horario> horarios) {
		this.horarios = horarios;
	}

	//bi-directional many-to-one association to SedeEscenario
	@OneToMany(mappedBy="escenario", fetch = EAGER )
	public List<SedeEscenario> getSedeEscenarios() {
		return this.sedeEscenarios;
	}

	public void setSedeEscenarios(List<SedeEscenario> sedeEscenarios) {
		this.sedeEscenarios = sedeEscenarios;
	}
	
}